Skip to main content

第三期代码示例:MOD - 无情铁手

Mod说明

关联知识:

LongFei:第三期 血肉 - 组件与动作39 赞同 · 7 评论文章

此mod目的在于帮助大家学习如何编写自己的component与action,加深理解。

代码位于github仓库 dst_mod_tutorial,不熟悉github的同学,可以直接点击绿色的【code】按钮,然后点击【Download Zip】。每一期的代码都是独立一个文件夹的mod,可以直接放入游戏的mods文件夹中使用。这个Mod关联的是第三期,相应的文件夹就是lesson3

文件结构如下

dst_mod_tutorial              //
├─ README.md //
└─ lesson3 // 第三期Mod
├─ modicon.tex //
├─ modicon.xml //
├─ modinfo.lua //
├─ modmain.lua // 主程序文件
├─ modworldgenmain.lua //
└─ scripts //
├─ components //
│ └─ ironhand.lua // component定义
└─ lf_actions.lua // 动作相关参数

主要阅读modmain.lua, ironhand.lua,lf_actions.lua这三个文件

  • modmain: 主程序文件,你可以从中看到如何添加Action以及其与SG,component的关联
  • ironhand: component定义,你可以从中看到如何定义一个component以及相应的函数
  • lf_actions: 通过两个table存储了action相关的参数,后续要调整也非常方便。

顺带一提,这个代码是做了一些优化的,copy自我的Samansha人物Mod,是我自己编写的Mod框架的一部分。通过框架的构建,将action的关键参数分离出来独立成一个文件,后续要添加新的动作会容易很多。如果你刚开始学习Mod制作,可以先copy这段代码来解决action方面的需求,不需要改动modmain中的内容,只需要修改lf_actions.lua中的table就可以了。

需求描述

  • 希望为所有的玩家添加一种能力,允许人物徒手完成原本需要工具才能完成的砍树、挖矿等工作
  • 限制条件:每次使用熟练度+1,血量-1
  • 成长阶段1:熟练度到达100后,不再扣血
  • 成长阶段2:熟练度到达200后,变成双击,相当于工作次数减半,但熟练度仍然为+1
  • 成长阶段3:熟练度到达500后,任何工作都只需一次就可以完成。

测试:在游戏中,空手状态下,光标移动到树、矿石上时,会提示【铁手 xxx】,然后右键目标,可以砍树或挖矿,并且在完成动作后,人物会说话表明当前的熟练度。根据熟练度的不同,需要重复的次数也不同。100熟练度以下,每次攻击会扣1血。

实现要点

  • 构建一个新的component:熟练度的增加和存储,以及徒手砍树、挖矿等
  • 构建一个新的动作:调用copmonent的函数
  • 连接component与action,使得玩家的界面上可以直接点击树、矿石等物体进行互动。
  • 让新动作有相应的动画表现:在玩家的SG中添加ActionHanlder,触发新动作后会自动转向一个已存在的state

详细说明请看代码中的注释